package internal

type TaskNode struct {
	// 本任务依赖的其他任务,完成状态
	OutEdge map[string]bool
	// 依赖本任务的其他任务,完成状态
	InEdge map[string]bool
	// 剩余依赖任务
	OutCounter int
	// 剩余被依赖任务
	InCounter int
	// 任务是否完成
	Done bool
}

func NewNode(deps []string) *TaskNode {
	taskNode := &TaskNode{
		OutEdge:    make(map[string]bool),
		InEdge:     make(map[string]bool),
		OutCounter: 0,
		InCounter:  0,
		Done:       false,
	}

	for _, dep := range deps {
		taskNode.OutEdge[dep] = false
		taskNode.OutCounter += 1
	}

	return taskNode
}
